// set  map 是两种存储结构
// set 不能放 重复的东西   类似数组

// 并集 交集 差集
let s11 = new Set([1,2,3])
let s22 = new Set([1,2,4,5])
// 并集
function union() {
  let s1 = new Set([1,2,3])
  let s2 = new Set([1,2,4,5])
  console.log([...new Set([...s1, ...s2])])
}
// 交集
function intersection() {
  return [...new Set(s11)].filter(item => new Set(s22).has(item))
}
console.log(intersection())
// 差集
function diff() {
  return [...new Set(s11)].filter(item => !(new Set(s22).has(item)))
} 
console.log(diff())


// map  是有key的 不能放重复的 
// 
// let m = new Map()
let m = new WeakMap()
let obj = {name: 1}
// 如果用 WeakMap 没有这个问题  没有引用关系 
m.set(obj, 456)   // 这个obj的空间 被 set所引用 没有销毁
obj = null; // 这个空间还在
console.log(m, obj) // Map { { name: 1 } => 456 } null